package com.evildog.workspace.system.application.service;

import com.evildog.workspace.common.object.PageQuery;
import com.evildog.workspace.common.result.PagedResult;
import com.baomidou.mybatisplus.extension.service.IService;
import com.evildog.workspace.dependencies.mybatis.object.LinkIdDTO;
import com.evildog.workspace.dependencies.mybatis.object.QueryConditionDTO;
import com.evildog.workspace.system.application.bo.UserBO;
import com.evildog.workspace.system.application.bo.UserPageBO;
import com.evildog.workspace.system.application.dto.UserCreateDTO;
import com.evildog.workspace.system.application.dto.UserDTO;
import com.evildog.workspace.system.application.dto.UserPageDTO;
import com.evildog.workspace.system.application.dto.UserUpdatePassDTO;
import com.evildog.workspace.system.application.entity.User;

import java.util.List;

/**
 * <p>
 * User Service
 * </p>
 *
 * @author evildog
 * @since 2020-07-18
 */
public interface UserService extends IService<User> {

    /**
    * 自定义分页
    */
    PagedResult<UserPageBO> getPageList(PageQuery query, List<QueryConditionDTO> queryConditions, UserPageDTO pageDTO);

    UserBO getDetailById(Long id);

    boolean updateById(UserDTO param);

    boolean save(UserCreateDTO param);

    UserBO getAccount(String account, String password);

    UserBO getAccount(Long userId);

    boolean updateUserGroup(Long id, LinkIdDTO convert);

    boolean remove(Long id);

    boolean updatePassword(UserUpdatePassDTO convert);

}
